package com.prd.service;

import com.prd.dto.WorkContactFormDTO;
import com.prd.model.WorkContactFormDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.prd.util.JsonData;

/**
 * <p>
 * 工作联络单数据表 服务类
 * </p>
 *
 * @author lizhaoyi
 * @since 2023-11-06
 */
public interface WorkContactFormService extends IService<WorkContactFormDO> {

    /**
     * 新建工作联络单
     * @param workContactFormDTO
     * @return
     */
    JsonData creatWorkOrder(WorkContactFormDTO workContactFormDTO);

    /**
     * 查看工作联络单详情
     * @param id
     * @param userId
     * @return
     */
    JsonData getDetail(Long id, String userId);

    /**
     * 确定收到
     * @param id
     * @return
     */
    JsonData confirmReceipt(Long id);

    /**
     * 办结回复
     * @param workContactFormDTO
     * @return
     */
    JsonData completedResponse(WorkContactFormDTO workContactFormDTO);

    /**
     * 安排执行人/由我执行
     * @param id
     * @param userId
     * @return
     */
    JsonData setExecutor(Long id, Long userId);

    /**
     * 执行汇报
     * @param workContactFormDTO
     * @return
     */
    JsonData executionReport(WorkContactFormDTO workContactFormDTO);

    /**
     * 决算
     * @param workContactFormDTO
     * @return
     */
    JsonData finalAccount(WorkContactFormDTO workContactFormDTO);

    /**
     * 安排督导人员/由我督导
     * @param id
     * @param userId
     * @return
     */
    JsonData setWatcher(Long id, Long userId);

    /**
     * 未达标/不合格
     * @param workContactFormDTO
     * @return
     */
    JsonData notStandard(WorkContactFormDTO workContactFormDTO);

    /**
     * 达标/合格
     * @param workContactFormDTO
     * @return
     */
    JsonData standard(WorkContactFormDTO workContactFormDTO);

    /**
     * 预算执行误差报告
     * @param workContactFormDTO
     * @return
     */
    JsonData executionErrorReport(WorkContactFormDTO workContactFormDTO);

    /**
     * 预决算意见
     * @param workContactFormDTO
     * @return
     */
    JsonData budgetOpinion(WorkContactFormDTO workContactFormDTO);

    /**
     * 预完成
     * @param id
     * @return
     */
    JsonData preComplete(Long id);

    /**
     * 已完成
     * @param id
     * @return
     */
    JsonData complete(Long id);

    /**
     * 取消联络单
     * @param id
     * @return
     */
    JsonData cancelContactForm(Long id);

    /**
     * 增加抄送人
     * @param id
     * @param userId
     * @return
     */
    JsonData addCC(Long id, String userId);

    /**
     * 分页查询工作联络单
     * @param page
     * @param size
     * @return
     */
    JsonData selectPage(int page, int size);

}
